package com.easonji.admin.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.easonji.common.node.MenuNode;
import com.easonji.common.node.TreeNode;

/**
 * @ClassName: PermissionDAO
 * @Description: 权限表 DAO 接口
 * @Author: LiuJun
 * @date: 2018/07/30 14:07:16
 * @Version: 1.0
 * @Copyright: Copyright (c) 2018 - 2019
 */
public interface PermissionDAO {

    /**
     * 根据应用ID，角色ID（多个）获取角色菜单列表
     *
     * @param appId
     *            应用ID
     * @param roleIds
     *            角色ID（多个）
     * @return 菜单列表树
     */
    List<MenuNode> selectMenuNodesByRoleIds(@Param("appId") Integer appId, @Param("roleIds") List<Integer> roleIds);

    /**
     * 根据角色ID列表获取权限列表
     *
     * @param roleIds
     *            角色ID列表
     * @return 权限列表
     */
    List<String> selectPermissionByRoleIds(@Param("roleIds") List<Integer> roleIds);

    /**
     * 根据应用ID获取权限列表
     * 
     * @param appId
     *            应用ID
     * @return 权限列表
     */
    List<TreeNode> selectPermissionTreeNodesByAppId(@Param("appId") Integer appId);

    /**
     * 根据角色ID获取菜单树列表
     * 
     * @param roleId
     *            角色ID
     * @return 菜单树列表
     */
    List<TreeNode> selectPermissionTreeNodesByRoleId(@Param("roleId") Integer roleId);

    /**
     * 根据权限ID，获取应用名称
     * 
     * @param permissionId
     *            权限ID
     * @return 应用名称
     */
    String selectAppNameById(@Param("permissionId") Integer permissionId);
}
